Стандарт описания функций-действийНиже приведён рекомендованный порядок создания функций-действий, позволяющий гарантированно покрыть весь необходимый функционал. Все функции стандартной библиотеки созданы по этому стандарту. Для пользовательских кастомизированных функций также желательно придерживаться этого порядка. Фильтр для недоступных объектов (по месту)Для всех объектов, передаваемых функции как аргумент, парсер устанавливает ключ места - 'м':
.... Фильтр для классовЗначения типа "class" исправно подбираются парсером и передаются в функции с ключом #!м. В соответствии с предыдущим параграфом большинство функций отсеивает классы по этому ключу. Но как правило, действия работают с конкретными объектами, а не с абстакциями. .... Декоративные функции-заглушкиБольшинство действий нацелены на определённый класс объектов; например, есть можно только еду. Соответствующая функция в общем виде будет выглядеть так:
action(есть _действие#Пф!е, еда _что#ВпДм!е){ //... }
При попытке съесть что-нибудь не являющееся едой, эта функция не сработает и игрок увидит одно из стандартных сообщений: > съешь бревно Никак невозможно съесть бревно. Чтобы разнообразить ответные реакции игры и сделать их более "человеческими" к каждой рабочей функции в пару необходисо создать декоративную функцию-заглушку:
action(есть _действие#Пф!е, предмет _что#ВпДм!е)
{ --check--
fail, $"{_что*#Ип} не{$съедобное*_что*#ИпКф}."
}
Эта функция ничего не делает, а только формирует сообщение о невозможности выполнения действия с данным предметом: > съешь камень камень не съедобен. Так как область класса @предмет шире чему у класса @еда, то и область применения декоративной функции получается шире чем у рабочей. Полиморфизм функций в каждом конкретном случае требует применения более узкой, более подходящей к текущей ситуации, функции. Таким образом декоративная функция не замещает рабочую, а дополняет её, расширяя охват обрабатываемых объектов. Действия с декорациями.... Действия со списками.... Кастомизация действий....
Примечания
Используйте данную функцию для установки необходимого значения внутренних переменных системы, таких
как разрешение экрана, заголовок окна, название файла протокола и т.д. И хотя многие из них имеют
значения по умолчанию, как мимнимум переменная HGE_FRAMEFUNC
должна быть установлена перед вызовом System_Start.
Смотрите такжеSystem_GetState, System states, System state value class |
to do: Дописать! |